'''
实例方法
    def 方法名(self[,形参列表]):
        函数体
    调用格式：对象.方法名([实参列表])
    要点：
        定义实例方法时，第一个参数必须未self。和前面一样，self指当前的实例对象。
        调用实例方法时，不需要也不能给self传参。self由解释器自动传参
    函数和方法的区别
        都是用来完成一个功能的语句块，本质都一样
        方法调用时，通过对象来调用。方法从属于特定实例对象，普通函数没有这个特点
        直观上看，方法定义时需要传递self，函数不需要【注意，说的是仅定义时，也就是说调用时是不需要的】
        实例方法调用的本质：obj.method(param)=>class.method(obj,param)
其他操作
    dir(obj)        获得对象的所有属性、方法
    obj.__dict__    对象的属性字典 {'name': '张三', 'score': 69, 'address': '东莞'}
    pass            空语句
    isinstance(obj,type)    判断对象是否指定类型
'''


class Student:
    def __init__(self, name, score):
        self.name = name
        self.score = score

    def say_score(self):
        self.age = 18  # 新增属性
        print(f'名字={self.name}，分数={self.score}')


s1 = Student('张三', 69)
s1.address = '东莞'
# s1.say_score()
print(s1.__dict__)
print(isinstance(s1, Student))  # 判断是否未指定类型的对象
# Student.say_score(s1) 和 s1.say_score()本质是一样的
